package com.lzs.collection.Set;

import com.sun.xml.internal.bind.v2.TODO;

import java.util.HashSet;
@SuppressWarnings("all")
public class HashSetSource {
    public static void main(String[] args) {
        HashSet hashSet = new HashSet();
        hashSet.add("Java");
        hashSet.add("php");
        hashSet.add("java");
        System.out.println(hashSet);
        /*HashSet底层源码解读
         * 1、执行HashSet()
         * public HashSet(){
         * map=new HashMap<>();
         * }
         * 2、执行add()
         * public boolean add(E e){
         * return map.put(e,PRESENT)==null;  //(static) PRESENT=new Object();
         * }
         * 3、执行put();该方法会执行hash(key)得到key的hash值,算法为h=(key.hashCode())异或（h>>16）
         * public V put (K key,V value){
         * return putVal(hash(key),key,value,false,true);
         * 4、执行putVal
         * final V putVal(int hash,K key,V value,boolean onlyIfAbaent,boolean evict){
         * Node<K,V>[]tab;
         * Node<K,V>p;
         * int n,i;//定义辅助变量
         * //table就是HsahMap的一个数组，类型是Node[];
         * //if语句表示如果当前table是null，或者大小=0；
         * //就是第一次扩容到16个空间
         * if((tab=table)==null||(n=tab.length)==0)
         * n=(tab=rezise().length);
         * }
         */
        //TODO
    }
}
